#ifndef _SGF_VECTOR3_H_
#define _SGF_VECTOR3_H_

#include "Type.h"
#include "Math.h"
#include <iostream>

namespace SGF
{
	class Vector3
	{
	public:
		Real64 _x, _y, _z;
		Vector3();
		Vector3(Real64 x, Real64 y, Real64 z);
		Vector3(const Vector3& src);
		Vector3& operator=(const Vector3& src);
		Real64 operator*(const Vector3& src);
		Vector3& operator+=(const Vector3& src);
		Vector3& operator-=(const Vector3& src);
		Vector3 operator+(const Vector3& src);
		Vector3 operator-(const Vector3& src);
		Real64& operator[](int index);
		static Vector3 CrossProduct(const Vector3& src1, const Vector3& src2);
		static Real64 Length(const Vector3& src);
		static Vector3 Normalize(const Vector3& src);
		friend std::ostream& operator << (std::ostream& stream, const Vector3& src);
	};
}

#endif
